Release notes

2025r10

Point in time custom attributes in business API

Custom attributes are supported in the content, copyright, MAM, on-demand schedule, person and trailer API.

Previously, the following types were available:

  • Boolean

  • Date

  • Decimal number

  • Drop-down list

  • Drop-down list for multiselection

  • Duration

  • Integer

  • Reference

  • String

  • Text

  • Web

From this version, custom attributes of the type Point in time can also be used in these APIs.

In the GET calls, such as GET /program, the following suffixes can be added to the call to either get only specified attributes in the response or all custom attributes of the supported types:

  • ?customAttributes=attributeName,attributeName

  • ?customAttributes=allCustomAttributes

For each custom attribute, the attribute name, value, and type will be given. The new type will be included in the response as follows:

...
    "customAttributes": [
        {
            "attributeName": "embargoTimestamp",
            "value": "2025-12-14T20:00:00Z",
            "type": "Point in time field"
        }
    ]
...

The Point in time custom attribute will be considered as a local timestamp in the Mediagenix Base platform in the default timezone, which is Brussels. When a GET call is done, the timestamp of the custom attribute is converted to UTC time.

For example, the Embargo timestamp from the example is 14/12/25 21:00:00. This is considered in the default timezone, Belgium, which is currently on UTC+1. When doing the GET call, the timestamp is returned as 2025-12-14T20:00:00Z.

In POST or PUT calls, an array of custom attributes needs to be provided with their attribute name and value. The new type should be specified as follows:

    "customAttributes": {
        "embargoTimestamp": "2025-12-14T20:00:00Z"
    }

The timestamp is converted from UTC to the default time zone before being saved in Mediagenix Base platform. This custom attribute type should follow the ISO 8601 format, meaning YYYY-MM-DDTHH:MM:SSZ.

For example, if 2025-12-14T20:00:00Z is sent, this will be saved as 21:00:00.

If the correct format is not used, the following error message is returned:

{
    "statusCode": "422",
    "message": "Operation cannot be completed due to violations",
    "timestamp": "2025-12-02T09:23:41Z",
    "concept": "Program",
    "id": "9502146329",
    "errors": [
        {
            "errorCode": "CORE-00002",
            "description": "Parsing error. Use ISO 8601 format",
            "data": [
                null
            ]
        }
    ]
}

API developers

The YAMLs will be updated in an upcoming version. Until then, the changes above can already be entered manually.

2024r6

Franchises in business API

In this version, the franchise was introduced as an additional content type. Since franchises cannot be

  • created or deleted on the Mediagenix Base platform; or

  • linked to contracts or transmissions;

the following APIs have been adapted to follow this behaviour.

When the external reference of a franchise is provided as contentId, an error message is returned.

For example, POST /onDemandTransmissions call:

{
    "statusCode": "422",
    "message": "Operation cannot be completed due to violations",
    "timestamp": "2024-05-31T18:22:34Z",
    "concept": "OnDemandTransmission",
    "id": null,
    "errors": [
        {
            "errorCode": "ONDEMANDSCHEDULE-00013",
            "description": "Only programs and episodes can be linked to an on demand transmission",
            "data": []
        }
    ]
}

2024r2

Custom attributes in on-demand schedule API

Custom attributes were already supported in the content, MAM, trailer API and person API.

From this version, the on-demand schedule API also supports custom attributes of the following types:

  • Boolean

  • Date

  • Decimal number

  • Drop-down list

  • Drop-down list for multiselection

  • Duration

  • Integer

  • Reference

  • String

  • Text

  • Web

In the GET /onDemandTransmissions and /onDemandTransmissions/onDemandTransmissionId calls, the following suffixes can be added to the URL to either get only the specified attributes in the response or all custom attributes of the supported types:

  • ?customAttributes=attributeName,attributeName

  • ?customAttributes=allCustomAttributes

For example: GET /onDemandTransmissions/9296208812?customAttributes=letterboxdAverage

For each custom attribute, the attribute name, value and type will be given. For example:

    "customAttributes": [
        {
            "attributeName": "letterboxdAverage",
            "value": "9",
            "type": "String field"
        }
    ]

For custom attributes of the type Drop-down list or Drop-down list for multiselection, a GET /dropdown/customAttribute/{attributeName} call has been added to the API to retrieve the possible values. The {attributeName} should be replaced with the actual attribute name of the custom attribute.

For example, GET /onDemandTransmissions/v1/dropdown/customAttribute/ageGroup.

To update one or more custom attributes on an on-demand transmission using the POST or PUT /onDemandTransmissions calls, an array needs to be provided with the attribute name and value of the custom attributes that should be updated:

    "customAttributes": {
            "letterboxAverage": "9",
            "ageGroup": "18-35"
        }

If the value is left empty by using null or "" for some types, the custom attribute is emptied.

The YAML has been updated for this change. It can be retrieved by using the GET /api call.

For API developers, the following parts of the YAML were updated.

30: get
The addition of parameters for custom attributes at line 34
254:  new drop-down call for custom attributes
395: schema for custom attributes
419: OnDemandTransmissionforGET schema
868: change to reference to new GET schema 
 - $ref: '#/components/schemas/OnDemandTransmissionForGet'

For easier viewing, the YAMLs can also be compared here: TextCompare

Changes to deleting and updating transmissions in on-demand schedule API

Previously, it was not possible to

  • update an on-demand transmission using the POST or PUT /onDemandTransmissions calls,

  • delete an on-demand transmission using the DELETE /onDemandTransmissions/{onDemandTransmissionId} call

of the on-demand schedule API when

  • a format template had already been applied;

  • an encoding media asset sequence was linked;

  • publication transmissions had been created;

  • publication records had been created;

In this case, a 422 error would be returned with the specific scenario:

Could not update/delete transmission:

  • the on demand transmission has a format template applied

  • the on demand transmission has encoding media asset linked

  • the on demand transmission has publication transmissions

  • the on demand transmission has publication records

For example:

{
    "statusCode": "422",
    "message": "Operation cannot be completed due to violations",
    "timestamp": "2024-03-05T08:18:03Z",
    "concept": "OnDemandTransmission",
    "id": "8521812812",
    "errors": [
        {
            "errorCode": "ONDEMANDSCHEDULE-00017",
            "description": "Could not update/delete transmission: the on demand transmission has publication transmissions",
            "data": [
                "the on demand transmission has publication transmissions"
            ]
        }
    ]
}

However, updating or deleting an on-demand transmission is allowed when doing it in WHATS'ON Base, even if there are already publication transmissions or publication records.

Therefore, from this version, it will be allowed to update or delete an on-demand transmission with publication transmissions and records in the on-demand schedule API.

When updating, such as changing the start or end date of the on-demand transmission using the POST or PUT calls, the linked publication transmissions and publication records will also be updated. So instead of the error message, a 200 message is returned:

{
    "statusCode": "200",
    "message": "OnDemandTransmission has been modified",
    "timestamp": "2024-03-05T08:20:32Z",
    "concept": "OnDemandTransmission",
    "id": "8521812812"
}

When deleting an on-demand transmission using the DELETE call, the linked publication transmissions will also be deleted and the status of the publication records will be changed to either Deleted or Deleted after publication, depending on whether the record has previously been published.

Note that the constraints for the linked format template and encoding media asset are still applied.

Nothing has changed in the YAML for this new behaviour.

2022r3

Additional fields in GET transmission calls of on-demand schedule API

From this version, in the response of the

  • GET call to search for a specific on-demand transmission ((GET /onDemandTransmissions/:onDemandTransmissionId:)

  • GET call to search for on-demand transmissions (GET /onDemandTransmissions),

of the on-demand schedule API, additional fields have been added:

  • mediaAssetId: the external reference of the media asset linked to the transmission

  • contentType: the description of the type of content, for example program, episode etc.

  • exploitationRightId: the external reference of the right linked to the transmission

This caused changes to the YAML so it is recommended to execute the call to get the newest version of the YAML.

2020r1.002.000

API version: v1.0.0

External reference cannot be cleared by BAPI

Within any POST and PUT call, if a an attribute is sent empty, WHATS'ON will clear that field. Previously, this was also possible with the external reference of a transmission.

Now, this is fixed. When no external reference is provided but the attribute is sent empty or null, we will ignore that tag and proceed as if there was no ID field (external reference) provided. This means that it should remain as is in a PUT call or return a new one in a POST call.

2019r1.000.000

API version: v1.0.0

Addition of On-demand schedule API

From this version on, it is possible to manage on-demand transmissions using the On-demand schedule API.